package com.sprouting.ops.model.qo;

import com.sprouting.ops.annotations.invoke.CheckNotNull;
import com.sprouting.ops.model.OpsProduct;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
 * 可用依赖查询
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2025/6/2 20:57
 */
@Data
public class AvailableDependQo extends BaseQuery {


    /*
     === 公共部分 ===
     */

    /**
     * 所属产品
     * @see OpsProduct#getId()
     */
    @CheckNotNull(message = "请选择所属产品")
    private String productId;
    /**
     * 依赖的类型，组件，应用
     * @see com.sprouting.ops.interfaces.ConstantBase.ProductDependType
     */
    @NotNull(message = "依赖类型不能为空")
    private Integer type;


    /**
     * 应用-组件-产品 名称
     */
    private String name;
    /*
     === 应用 ===
     */

    /**
     * 是否公共应用
     * 公共项目可以被多个项目引用，否则只能被一个项目引用
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#YES 是公共项目
     */
    private Integer appCommon;
    /**
     * 应用状态
     * @see com.sprouting.ops.interfaces.ConstantBase.AppState
     */
    private Integer appState;
    /**
     * 项目类型，前端，后端、小程序
     * @see com.sprouting.ops.interfaces.ConstantBase.AppType
     */
    private Integer appType;
    /**
     * 重要等级
     * @see com.sprouting.ops.interfaces.ConstantBase.Importance
     */
    private Integer appImportance;
    /**
     * 应用负责人姓名
     */
    private String appDirectorName;

     /*
     === 组件 ===
     */


     /*
     === 产品 ===
     */

    /**
     * 产品状态
     * @see com.sprouting.ops.interfaces.ConstantBase.ProjectState
     */
    private Integer productStatus;
    /**
     * 产品重要性
     * @see com.sprouting.ops.interfaces.ConstantBase.Importance
     */
    private Integer productImportance;
    /**
     * 产品负责人
     */
    private String productDirectorName;
    /**
     * 是否公共项目
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#YES 公共项目
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#NO 非公共项目
     */
    private Integer productCommon;

}
